#include"Protocol.h"
#include<QDebug>
#include<QThread>
PDU *mkPDU(unsigned int uiMsgLen)
{
    unsigned int uiPDULen=sizeof(PDU)+uiMsgLen;
    PDU*pdu=(PDU*)malloc(uiPDULen);

    if(NULL==pdu){      // 分配失败直接终止
        exit(EXIT_FAILURE);
    }

    memset(pdu,0,uiPDULen);

    pdu->uiPDULen=uiPDULen;
    pdu->uiMsgLen=uiMsgLen;

    return pdu;
}

PDU* copyPDU(const PDU* src)
{
    if (!src) {
        return nullptr; // 防止传入空指针
    }

    // 计算需要拷贝的总字节数（头部 + 消息体）
    unsigned int totalSize = sizeof(PDU) + src->uiMsgLen;

    // 分配新的 PDU 内存
    PDU* newPdu = (PDU*)malloc(totalSize);
    if (!newPdu) {
        qCritical() << "copyPDU: 内存分配失败";
        return nullptr;
    }

    // 拷贝原始 PDU 的全部内容（包括 caData 和 caMsg）
    memcpy(newPdu, src, totalSize);

    return newPdu;
}

